home *** CD-ROM | disk | FTP | other *** search
/ Developer Helper 1: Phil & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / HyperCard Goodies / HyperCard Dev. ToolKit / Serial & MacinTalk XCMDs / Peek.p < prev    next >
Text File  |  1987-06-15  |  1KB  |  70 lines

  1. {$R-}
  2.  
  3. (*
  4.     peek -- a sample HyperCard external function
  5.  
  6.     To compile and link this file using Macintosh Programmer's Workshop,
  7.  
  8.     pascal -w Peek.p
  9.     pascal -w XCmdUtil.p
  10.     asm -w XCmdUtil.a
  11.     link -m ENTRYPOINT -o HyperCommands -rt XFCN=0 -sn Main=Peek Peek.p.o ∂
  12.       XCmdUtil.p.o XCmdUtil.a.o "{MPW}"Libraries:interface.o
  13.  
  14. *)
  15.  
  16. {$S Peek }     { Segment name must be the same as the command name. }
  17.  
  18. UNIT DummyUnit;
  19.  
  20. INTERFACE
  21.  
  22. USES MemTypes, HyperXCmd, XCmdUtil;
  23.   
  24. PROCEDURE EntryPoint(paramPtr: XCmdPtr);
  25.  
  26. IMPLEMENTATION
  27.  
  28. PROCEDURE Peek(paramPtr: XCmdPtr);                                 FORWARD;
  29.  
  30.   PROCEDURE EntryPoint(paramPtr: XCmdPtr);
  31.   BEGIN
  32.     Peek(paramPtr);
  33.   END;
  34.  
  35.   PROCEDURE Peek(paramPtr: XCmdPtr);
  36.   VAR peekAddr,peekSize,peekVal: LongInt;    
  37.       str: Str255;
  38.   BEGIN
  39.     WITH paramPtr^ DO
  40.       BEGIN
  41.         { first param is addr }
  42.         ZeroToPas(params[1]^,str);
  43.         peekAddr := StrToNum(str);
  44.         
  45.         { second param, if given, is size }
  46.         peekSize := 1;
  47.         IF paramCount = 2 THEN
  48.           BEGIN
  49.             ZeroToPas(params[2]^,str);
  50.             peekSize := StrToNum(str);
  51.           END;
  52.         
  53.         CASE peekSize OF
  54.           1: peekVal := BAND($000000FF,Ptr(peekAddr)^);
  55.           2: peekVal := BAND($0000FFFF,WordPtr(BAND($FFFFFFFE,peekAddr))^);
  56.           4: peekVal := LongPtr(BAND($FFFFFFFE,peekAddr))^;
  57.           OTHERWISE peekVal := 0;
  58.         END;
  59.         
  60.         str := NumToStr(peekVal);
  61.         returnValue := PasToZero(str);
  62.       END;
  63.   END;
  64.  
  65.  
  66. END.
  67.  
  68.  
  69.  
  70.